package com.lemon.system.domain;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.lemon.common.core.serializer.JsonLongDeserializer;
import com.lemon.common.core.serializer.JsonLongSerializer;
import com.lemon.system.api.domain.SysDictData;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.lemon.common.core.annotation.Excel;
import com.lemon.common.core.base.BaseEntity;

import java.util.List;

/**
 * 包名称：com.lemon.system.domain
 * 类名称：BiElementConfig
 * 类描述：要素配置对象 bi_element_config
 * 创建人：@author huangpeng
 * 创建时间：2023-03-12
 */
public class BiElementConfig extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 主键 */
    @JsonSerialize(using = JsonLongSerializer.class)
    @JsonDeserialize(using = JsonLongDeserializer.class)
    private Long id;

    /** 要素编码 */
    @Excel(name = "要素编码")
    private String elementCode;

    /** 要素名称 */
    @Excel(name = "要素名称")
    private String elementName;

    /** 要素类型 */
    @Excel(name = "要素类型")
    private String elementType;

    /** 字典编码 */
    @Excel(name = "字典编码")
    private String dictCode;

    /** 所属模块 */
    @Excel(name = "所属模块")
    private String functionCode;

    /** 是否必填 */
    @Excel(name = "是否必填")
    private String dvRequired;

    /** 是否禁填 */
    @Excel(name = "是否禁填")
    private String dvDisabled;

    /** 是否多选 */
    @Excel(name = "是否多选")
    private String dvMultiple;

    /** 排序序号 */
    private String orderNo;

    /** 启用状态 */
    @Excel(name = "启用状态")
    private String elementStatus;

    /** 要素值，前端用 */
    private String elementValue;

    /** 字典下拉列表 */
    private List<SysDictData> dictOptions;

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }
    public void setElementCode(String elementCode) {
        this.elementCode = elementCode;
    }

    public String getElementCode() {
        return elementCode;
    }
    public void setElementName(String elementName) {
        this.elementName = elementName;
    }

    public String getElementName() {
        return elementName;
    }
    public void setElementType(String elementType) {
        this.elementType = elementType;
    }

    public String getElementType() {
        return elementType;
    }
    public void setDictCode(String dictCode) {
        this.dictCode = dictCode;
    }

    public String getDictCode() {
        return dictCode;
    }
    public void setFunctionCode(String functionCode) {
        this.functionCode = functionCode;
    }

    public String getFunctionCode() {
        return functionCode;
    }
    public void setDvRequired(String dvRequired) {
        this.dvRequired = dvRequired;
    }

    public String getDvRequired() {
        return dvRequired;
    }
    public void setDvDisabled(String dvDisabled) {
        this.dvDisabled = dvDisabled;
    }

    public String getDvDisabled() {
        return dvDisabled;
    }
    public void setDvMultiple(String dvMultiple) {
        this.dvMultiple = dvMultiple;
    }

    public String getDvMultiple() {
        return dvMultiple;
    }
    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public String getOrderNo() {
        return orderNo;
    }
    public void setElementStatus(String elementStatus) {
        this.elementStatus = elementStatus;
    }

    public String getElementStatus() {
        return elementStatus;
    }

    public String getElementValue() {
        return elementValue;
    }

    public void setElementValue(String elementValue) {
        this.elementValue = elementValue;
    }

    public List<SysDictData> getDictOptions() {
        return dictOptions;
    }

    public void setDictOptions(List<SysDictData> dictOptions) {
        this.dictOptions = dictOptions;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("elementCode", getElementCode())
            .append("elementName", getElementName())
            .append("elementType", getElementType())
            .append("dictCode", getDictCode())
            .append("functionCode", getFunctionCode())
            .append("dvRequired", getDvRequired())
            .append("dvDisabled", getDvDisabled())
            .append("dvMultiple", getDvMultiple())
            .append("orderNo", getOrderNo())
            .append("elementStatus", getElementStatus())
            .append("createBy", getCreateBy())
            .append("updateBy", getUpdateBy())
            .append("remark", getRemark())
            .append("delFlag", getDelFlag())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
